package com.bbs.util;

import org.springframework.util.StringUtils;

/**
 * 响应结果生成工具
 */
public class ResultGenerator {
    //常量  默认成功的消息
    private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS";
    //默认失败的消息
    private static final String DEFAULT_FAIL_MESSAGE = "FAIL";
    //结果成功的代码
    private static final int RESULT_CODE_SUCCESS = 200;
    //结果失败的代码
    private static final int RESULT_CODE_SERVER_ERROR = 500;

    /*
    * 静态方法 genSuccessResult()，用于生成一个成功的结果对象
    * */
    public static Result genSuccessResult() {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SUCCESS);
        result.setMessage(DEFAULT_SUCCESS_MESSAGE);
        return result;
    }

    /*
    * 重载的静态方法 genSuccessResult(String message)，用于生成一个带有自定义消息的成功结果对象
    * */
    public static Result genSuccessResult(String message) {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SUCCESS);
        result.setMessage(message);
        return result;
    }

    /*
    * 重载的静态方法 genSuccessResult(Object data)，用于生成一个带有数据的成功结果对象
    * */
    public static Result genSuccessResult(Object data) {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SUCCESS);
        result.setMessage(DEFAULT_SUCCESS_MESSAGE);
        result.setData(data);
        return result;
    }

    /*
    * 静态方法 genFailResult(String message)，用于生成一个失败结果对象
    * */
    public static Result genFailResult(String message) {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SERVER_ERROR);
        if (!StringUtils.hasLength(message)) {
            result.setMessage(DEFAULT_FAIL_MESSAGE);
        } else {
            result.setMessage(message);
        }
        return result;
    }

    /*
    * 静态方法 genErrorResult(int code, String message)，用于生成一个错误结果对象
    * */
    public static Result genErrorResult(int code, String message) {
        Result result = new Result();
        result.setResultCode(code);
        result.setMessage(message);
        return result;
    }

    /*
     * 静态方法 genResult(int code, String message)，用于生成一个结果对象
     * */
    public static Result genResult(String message) {
        Result result = new Result();
        if (message.equals(DEFAULT_SUCCESS_MESSAGE)) {
            result.setResultCode(RESULT_CODE_SUCCESS);
            result.setMessage(message);
        } else {
            result.setResultCode(RESULT_CODE_SERVER_ERROR);
            result.setMessage(message);
        }
        return result;
    }
}
